iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
Security

我一個大調查下去:從零開始的數位鑑識系列 第 9

【Day 09】Memory Forensics 03:PowerShell 偽裝下的多階段攻擊 - Reveal Lab

  • 分享至 

  • xImage
  •  

前言

今天要打的是 Reveal Lab,這題的分類是 Endpoint Forensics,難度為 easy。

Reveal

情境

您是一家金融機構的取證調查員,您的 SIEM 系統在一台可存取敏感財務資料的工作站上標記了異常活動。由於懷疑存在資料洩露,您收到了受感染機器的記憶體轉儲。您的任務是分析記憶體中是否有入侵跡象,追蹤異常的來源,並評估其影響範圍,以有效控制事件。

工具

volatility 3

Q1:識別惡意進程的名稱有助於理解攻擊的性質。惡意進程的名稱是什麼?

vol -f 192-Reveal.dmp windows.malfind

https://ithelp.ithome.com.tw/upload/images/20250828/20177998XBUlmTreIV.png
malfind 的輸出中其他都是系統核心進程,但有四個 powershell.exe 的記憶體區域都為 PAGE_EXECUTE_READWRITE,擁有讀寫+執行權限,正常情況下不會有這種情況,這點很可疑。
另一點是 malfind 會輸出可疑進程中的可疑 assembly。從最底下那個 powershell.exe 的 asm 中可以看到它會跳轉到一個他設定的記憶體位址,這也非常可疑。

vol -f 192-Reveal.dmp windows.cmdline

https://ithelp.ithome.com.tw/upload/images/20250828/20177998a6Xe0kaE4F.png
用 cmdline 插件看到它建立了一個隱藏的對外連線和執行了一個遠端目錄下的 DLL,是典型的第一階段惡意軟體的特徵。
第一階段惡意軟體 (dropper) 它的主要任務是從遠端伺服器下載第二階段的惡意軟體,它會用各種方法來躲避防毒軟體偵測,所以丟到 VirusTotal 上有可能會掃不出它是病毒,這也是他的目標之一。
Ans:powershell.exe

Q2:了解惡意進程的父進程 ID (PPID) 有助於追蹤進程層次結構並理解攻擊流程。惡意進程的父進程 PID 是什麼?

vol -f 192-Reveal.dmp windows.pstree

https://ithelp.ithome.com.tw/upload/images/20250828/201779988E4zKufQas.png
Ans:4120

Q3:確定惡意軟體執行第二階段有效載荷所使用的檔案名稱對於識別後續惡意活動至關重要。惡意軟體用於執行第二階段有效載荷的檔案名稱是什麼?

我們從 pstree 或 cmd 的輸出中可以看到 powershell.exe 連到遠端伺服器,然後使用 rundll32 運行了遠端伺服器目錄下的 3435.dll。
這裡明顯可以看出 powershell.exe 是一階惡意軟體,並且成功運行了 3435.dll 這個二階惡意軟體
Ans:3435.dll

Q4:識別遠端伺服器上的共享目錄有助於追蹤攻擊者所針對的資源。遠端伺服器上正在存取的共享目錄的名稱是什麼?

一樣從 pstree 或 cmd 的輸出中就能看到。
Ans:davwwwroot

Q5:描述使用 Windows 實用程式運行惡意檔案的第二階段有效負載執行的 MITRE ATT&CK 子技術 ID 是什麼?

做到這裡你一定想問什麼是 MITRE ATT&CK?
它就像一本駭客行為百科全書,詳細地列出了攻擊者在各個入侵階段的各種行為模式和手法。
直接 Google MITRE ATT&CK,進入首頁右上角 Techniques 下的 Enterprise 頁面
https://ithelp.ithome.com.tw/upload/images/20250828/20177998nTBj6WP8Gh.png
搜尋 rundll32,搜尋到第二個結果描述和我們前面看到的惡意行為如出一轍。
https://ithelp.ithome.com.tw/upload/images/20250828/201779981L3sCO4wDg.png
可以看到他是T1218.011。(MITRE ATT&CK完整使用方法這邊就不說了,有興趣學得自己上網查)
Ans:T1218.011

Q6:識別惡意進程運行的使用者名稱有助於評估被入侵的帳戶及其潛在影響。惡意進程運行的使用者名稱是什麼?

這裡我們要用到 getsids 這個插件,它會列出跟進程有關的 SID,讓我們能夠識別每個進程的使用者帳戶、群組和權限。
那什麼是 SID 呢?
SID 是 Windows 中用來識別使用者、群組等等的唯一代碼,可以把它想像成身分證號碼,每個 SID 都代表一個特定的帳戶,系統透過這個 SID 就能知道使用者的身分、權限等等。

vol -f 192-Reveal.dmp windows.getsids | grep 3692

這條指令用 grep 從 getsids 的輸出中搜尋 3692 (powershell.exe 的 PID)。
https://ithelp.ithome.com.tw/upload/images/20250828/20177998dQj2qL3uDe.png
上圖中我能們看到,除了幾個群組名,還有一個 username Elon。
Ans:Elon

Q7:了解惡意軟體家族的名稱對於將攻擊與已知威脅關聯起來並制定適當的防禦措施至關重要。該惡意軟體家族的名稱是?

既然 powershell.exe 是一階 payload 掃不出來,3435.dll 又是在共享資料夾中執行的,我們對這個惡意軟體的資訊現在只剩他的 IP 了。把 IP 丟到 VirusTotal 上看看
https://ithelp.ithome.com.tw/upload/images/20250828/20177998wfmseNX77Z.png
可以看到這樣一段敘述 This IPV4 is used by STRELASTEALER…。
StrelaStealer 是一種針對性強、隱匿性高的惡意軟體,主要被用於竊取電子郵件帳戶,可能進而引發嚴重的個人資料外洩和財產損失風險。
Ans:StrelaStealer

總結

我們今天用前兩天學到的 volatility 插件成功辨識出偽裝成正常 PowerShell 的惡意軟體,還原從一階 dropper 到二階惡意軟體的完整流程,並利用 IP 定位惡意軟體的家族。同時我們學到了如何透過 getsids插件找出被感染的使用者帳號和從惡意軟體的攻擊手法找出他的MITRE ATT&CK 子技術。
明天我們將進入 Medium 難度的更複雜的攻擊場景分析。


上一篇
【Day 08】Memory Forensics 02:VPN隧道下的隱形攻擊者 - RedLine Lab
下一篇
【Day 10】Disk Forensics 02:Linux 日誌分析 - Hammered Lab
系列文
我一個大調查下去:從零開始的數位鑑識13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言